package com.sinog.biz.mapper.havexml;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sinog.core.domain.AbPrisonersResultVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;

/**
 * @desc 安置帮教管理
 * @author sunsf
 * @date 2020-02-07-16:37
 */
public interface AbPrisonerMapper extends BaseMapper<AbPrisonersResultVo> {

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 全部人员管理 - 列表
     * 安置帮教管理 - 帮教工作信息管理 - 救助管理 - 列表
     * 安置帮教管理 - 帮教工作信息管理 - 帮教管理 - 列表
     * @param page 分页
     * @param sortField sortField
     * @param sortOrder sortOrder
     * @param querykey 搜索条件
     * @param xdkey 吸毒搜索条件
     * @param departid 部门编号
     * @param level level
     * @param orgid 上级单位编号
     * @param xdFlag 是否吸毒
     * @param pinggu 是否重点帮教对象
     * @param searchMap searchMap
     * @return List<Map < String,String>>
     */
    List<Map<String,String>> getQbryglList(Page<Map<String,String>> page,
                                           @Param("sortField") String sortField,
                                           @Param("sortOrder") String sortOrder,
                                           @Param("querykey") String querykey,
                                           @Param("xdkey") String xdkey,
                                           @Param("departid") String departid,
                                           @Param("level") String level,
                                           @Param("orgid") String orgid,
                                           @Param("xdFlag") Integer xdFlag,
                                           @Param("pinggu") String pinggu,
                                           @Param("searchMap") Map<String,Object> searchMap);

    /**
     * 根据犯罪编号删除ab_prisoners
     * @param priNum 服刑人员编号
     * @return int
     */
    int deleteByPriNum(@Param("priNum") String priNum);

    /**
     * 获取基本信息
     * @param priNum 服刑人员编号
     * @return Result
     */
    Map<String,Object> getBaseInfoByPriNum(@Param("priNum") String priNum);

    /**
     * 安置帮教管理 - 帮教对象信息管理 - 全部人员管理 - 设置帮教小组 - 保存
     * @param priNum 服刑人员编号
     * @param xbjfa xbjfa
     * @return int
     */
    int updateByPriNum(@Param("priNum") String priNum,@Param("xbjfa") String xbjfa);

    /**
     * 安置帮教管理 - 档案管理 - 列表
     * @param page 分页 分页
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @param querykey 姓名（搜索关键字）
     * @param departid 部门编号
     * @param level level    单位级别
     * @param orgid 上级单位编号     用户单位编码
     * @param type 资源类型编码
     * @param inputSource 录入来源 01:司法所补录的解矫人员,05:司法所补录的监狱人员,3.看守所录入的服刑人员,4:接口进入的看守所人员,5:监狱录入的服刑人员,6:接口进入的监狱服刑人员,7:社矫录入的服刑人员,8:接口进入的社矫人员,9:监狱通过excel导入,10:社矫通过excel导入,11:看守所通过excel导入,30:湖南看守所个性化对接
     * @param sfsl sfsl
     * @return String
     */
    List<Map<String,String>> getArchivesManagerList(Page<Map<String,String>> page,
                                                    @Param("sortField") String sortField,
                                                    @Param("sortOrder") String sortOrder,
                                                    @Param("querykey") String querykey,
                                                    @Param("departid") String departid,
                                                    @Param("level") int level,
                                                    @Param("orgid") String orgid,
                                                    @Param("type") String type,
                                                    @Param("inputSource") String inputSource,
                                                    @Param("sfsl") String sfsl);

    /**
     * 从main表更新基本信息部分数据到ab_prisoner
     * @param priNum 服刑人员编号
     */
    void updateDataFromMain(@Param("priNum") String priNum);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 - 安置 - 保存(修改ab_prisoners表状态)
     * @param priNum priNum
     * @param azzt azzt
     * @return int
     */
    int updateState(@Param("priNum") String priNum, @Param("azzt") String azzt);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置 - 列表
     * @param page page
     * @param querykey querykey
     * @param departid departid
     * @param level level
     * @param orgid orgid
     * @param pinggu pinggu
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @return List<Map<String,String>>
     */
    List<Map<String,String>> getUnSettleList(Page<Map<String,String>> page,
                                             @Param("querykey") String querykey,
                                             @Param("departid") String departid,
                                             @Param("level") int level,
                                             @Param("orgid") String orgid,@Param("pinggu") String pinggu,
                                             @Param("sortField") String sortField,@Param("sortOrder") String sortOrder);

    /**
     * 获取安置信息列表
     * @param priNum priNum
     * @return Map<String,Object>
     */
    Map<String,Object> getBaseInfoBypriNum(@Param("priNum") String priNum);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 列表
     * @param page page
     * @param querykey querykey
     * @param departid departid
     * @param level level
     * @param orgid orgid
     * @param pinggu pinggu
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @return List<Map < String,Object>>
     */
    List<Map<String,String>> getDownSettleList(Page<Map<String,String>> page,
                                               @Param("querykey") String querykey,
                                               @Param("departid") String departid,
                                               @Param("level") int level,
                                               @Param("orgid") String orgid,@Param("pinggu") String pinggu,
                                               @Param("sortField") String sortField,@Param("sortOrder") String sortOrder);

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 帮教管理 - 帮教 - 就业信息列表
     * @param priNum priNum
     * @return List<Map < String,Object>>
     */
    List<Map<String,Object>> getBjJyxxInfoList(@Param("priNum") String priNum);

    /**
     * 获取帮教--培训机构
     * @param priNum 服刑人员编号
     * @return List<Map < String,Object>>
     */
    List<Map<String,Object>> getBjZzcyInfoList(@Param("priNum") String priNum);

    /**
     * 更新帮扶状态
     * @param priNum priNum
     * @return int
     */
    int updateBjztExistsByPriNumBf(@Param("priNum") String priNum);

    /**
     * 更新帮扶状态
     * @param priNum priNum
     * @return int
     */
    int updateBjztByPriNumBf(@Param("priNum") String priNum);

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 年度鉴定 - 列表
     * @param page page
     * @param map map
     * @return List<Map < String,String>>
     */
    List<Map<String,String>> getJdInfoList(Page<Map<String,String>> page,@Param("map") Map<String,Object> map);

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 帮教对象走访管理 - 走访 - 查看(服刑人员基本信息)
     * @param priNum 服刑人员编号
     * @return Map<String,Object>
     */
    Map<String,Object> getPrisonerBaseInfo(@Param("priNum") String priNum);

    /**
     * 更新救助状态
     * @param priNum priNum
     * @return int
     */
    int updateBjztExistsByPriNum(@Param("priNum") String priNum);

    /**
     * 安置帮教管理 - 帮教工作信息管理 - 救助管理 - 救助 - 删除
     * @param priNum priNum
     * @return int
     */
    int updateBjztByPriNum(@Param("priNum") String priNum);

    /**
     * 安置帮教管理 - 双列管 - 户籍地 - 列表
     * @param page 分页
     * @param querykey 查询条件
     * @return List<Map < String,String>>
     */
    List<Map<String,String>> getSlgHjd(Page<Map<String,String>> page,@Param("params") Map<String,Object> querykey);

    /**
     * 安置帮教管理 - 帮教对象信息管理 - 户籍迁出人员管理 - 迁移办理 - 姓名搜索
     * @param key key
     * @param departid departid
     * @param level level
     * @return List<Map < String,Object>>
     */
    List<Map<String,Object>> getPrisonerListByKey(
            @Param("key") String key,@Param("departid") String departid,@Param("level") int level);

    /**
     * 审批完成
     * @param map map
     * @param pid pid
     * @return int
     */
    int updateBaseInfo(@Param("map") Map<String,Object> map,@Param("pid") String pid);

    /**
     * 安置帮教管理 - 帮教对象信息管理 - 失联人员管理 - 失联登记 - 姓名搜索
     * 失联人员的状态条件约束：是安帮人员、没有失联的、没有解除安置帮教的、司法所补录人员中已经录入服刑信息的、对于吸毒状态没有要求
     * @param key key
     * @param departid departid
     * @param level level
     * @param orgid orgid
     * @return List<Map < String,Object>>
     */
    List<Map<String,Object>> getPrisonerList(
            @Param("key") String key,
            @Param("departid") String departid,@Param("level") int level,@Param("orgid") String orgid);

    /**
     * 失联管理人员--找回查询--保存
     * @param slId slId
     * @return Map<String,Object>
     */
    Map<String,Object> getTuoguanInfoById(@Param("slId") String slId);

    /**
     * 失联管理人员--失联记录
     * @param slId slId
     * @return Map<String,Object>
     */
    Map<String,Object> getTuoguanJlInfoById(@Param("slId") String slId);

    /**
     * 安置帮教管理 - 帮教对象信息管理 - 帮教对象走访管理 - 未走访列表
     * @param page page
     * @param parameterMap parameterMap
     * @param departId 当前用户ID
     * @param level 当前登录用户level
     * @param orgid 上级编号
     * @return List<Map < String,String>>
     */
    List<Map<String,String>> getUnZfBaseInfoList(Page<Map<String,String>> page,
                                                 @Param("parameterMap") Map<String,Object> parameterMap,
                                                 @Param("departId") String departId,
                                                 @Param("level") int level,@Param("orgid") String orgid);

    /**
     * 安置帮教管理 - 帮教对象信息管理 - 帮教对象走访管理 - 已走访列表
     * @param page page
     * @param parameterMap 条件 -- 名称模糊查询,是否重点帮教对象,上次走访时间
     * @param departId 当前用户ID
     * @param level 当前登录用户level
     * @param orgid 上级编号
     * @return List<Map < String,String>>
     */
    List<Map<String,String>> getZfBaseInfoList(Page<Map<String,String>> page,
                                               @Param("parameterMap") Map<String,Object> parameterMap,
                                               @Param("departId") String departId,
                                               @Param("level") int level,@Param("orgid") String orgid);

    /**
     * 安置帮教管理 - 解除帮教管理 - 列表
     * @param page 分页
     * @param searchMap searchMap
     * @return List<Map < String,String>>
     */
    List<Map<String,String>> getReleaseHelpEduList(Page<Map<String,String>> page,Map<String,Object> searchMap);

    /**
     * 安置帮教管理 - 解除帮教管理 - 列表(按照解除日期排序)
     * 审核状态为未申请和已申请但审批失败的，按照解除时间升序排序
     * @param page 分页
     * @param searchMap searchMap
     * @return List<Map < String,String>>
     */
    List<Map<String, String>> getReleaseHelpEduList1(Page<Map<String, String>> page, Map<String, Object> searchMap);

    /**
     * 安置帮教管理 - 解除帮教管理 - 列表(按照解除日期排序)
     * 已申请并且是审批中和审批通过的
     * @param page 分页
     * @param searchMap searchMap
     * @return List<Map < String,String>>
     */
    List<Map<String, String>> getReleaseHelpEduList2(Page<Map<String, String>> page, Map<String, Object> searchMap);
    /**
     * 批量更新数据del_flag标识
     * @param priNums 需要更新的集合
     * @param flag del_flag标识   0：正常，-1：已删除，-2：脏数据
     */
    void batchUpdateDelFlag( @Param("priNums") List<String> priNums,@Param("flag") String flag);

}